In modern computing systems, virtualization capability is implemented and supported on hardware, operating systems, hypervisors, routers, and other components and aspects. Virtualization support for network resources is needed to improve the overall efficiency of hardware utilization, lower the overall cost, and improve performance. For example, the increasing deployment of 10 Gigabit (Gb) Ethernet and the advancement of 40 Gb network technologies demand better network bandwidth sharing. Additionally, network convergence technologies, such as Fiber Channel over Ethernet (FCoE), impose challenges to the traditional means of sharing network resources, including currently used Network Interface Card (NIC) and switch components.
Virtualization for network resources can include both resource sharing (e.g., bandwidth sharing) and link aggregation. Resource sharing needs sufficient availability (i.e., sufficient resource or bandwidth available for sharing), while resource aggregation needs sufficient bandwidth and failure tolerance. One issue raised by virtualization of network resources, e.g., for bandwidth sharing, is achieving a hardware-independent implementation to support migration among different types of hardware from different vendors. Various techniques are developed or proposed to address the issue of independent-hardware implementation. However, the proposed techniques may not sufficiently meet the requirements of high manageability, hardware independence, high availability, and high performance.